/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package versionamientopersona;

/**
 *
 * @author ROLAS DJ
 */
//Otra version
import java.io.*;//importar la libreria io, para poder manejar ficheros
import javax.swing.JOptionPane;// Utilizo esta libreria para poder manejar Cuadeo de dialogos
public class VersionamientoPersona {

    /**
     * @param args the command line arguments
     */
    //name: http://versionaminto-clase-persona.googlecode.com/svn/trunk/
    //Clave: JA3qt3fp2tX4
    public static void main(String[] args) {
        crearArchivo();
    }

    // Metodo para crear el archivo de texto
    public static void crearArchivo() {
        int opciones=0;// Variable para realizar las opciones que elijamos
        String OPCIONES=""; // Variable para capturar las opciones que se digite
        File Archivo; //Creamos la variable del fichero en donde se llamara Archivo
        Archivo = new File("c:\\Versionamiento\\archivo.txt"); // Accedo al archivo.
        //Verifico si el archivo ya existe, si no existe se procede a crear    
        if (!Archivo.exists()) {
            //Utilizo try-catch porque pueden suceder excepciones
            try {
                Archivo.createNewFile();                    
                JOptionPane.showMessageDialog(null, "El archivo se a creado correctamente");
            } catch (IOException e) {
                JOptionPane.showMessageDialog(null, "El archivo no se a podido crear");
            }
        }
        //El bloque de do-while me permitira presentar el menu en pantalla
        do{
            OPCIONES= JOptionPane.showInputDialog(null, "MENU: \n1.- Ingresar datos de persona.\n2.- Presentar datos de persona.\n3.- Salir.\nIngrese una opción:");
            opciones=Integer.parseInt(OPCIONES);
            switch(opciones){
                case 1: escribirArchivo(Archivo); break;
                case 2: presentarDatos(Archivo); break;
            }
            
        }while(opciones!=3);
        
    }
    //Metodo de Escritura para un archivo

    public static void escribirArchivo(File Archivo) {
        //Variables que me permitiran ingresar los datos;
        String IngresaDatos="";
        String almacenaDatos=LeerDatos(Archivo)+"Cedula: ";
        //Crea la variables para escribir en el archivo, especificamos el archivo a escribir.
        //Al trabajar con ficheros nos obliga a meter el codigo en un bloque try-catch.
        try {
            FileWriter escribir = new FileWriter (Archivo); 
            BufferedWriter buferEscribir = new BufferedWriter(escribir);
            PrintWriter salida =new PrintWriter(buferEscribir);
            //Ingrsando Datos
            IngresaDatos=JOptionPane.showInputDialog("Ingrese su cedula:");
            almacenaDatos=almacenaDatos+IngresaDatos+" Nombres: ";
            IngresaDatos=JOptionPane.showInputDialog("Ingrese sus Nombres:");
            almacenaDatos=almacenaDatos+IngresaDatos+" Apellidos: ";
            IngresaDatos=JOptionPane.showInputDialog("Ingrese sus Apellidos:");
            almacenaDatos=almacenaDatos+IngresaDatos+" Dirección: ";
            IngresaDatos=JOptionPane.showInputDialog("Ingrese su Dirección:");
            almacenaDatos=almacenaDatos+IngresaDatos;
            //Almaceno los datos al fichero
            salida.write(almacenaDatos+"\n");
            //Cerrar el enlace al archivo
            salida.close();
            buferEscribir.close();
            escribir.close();
        } catch (Exception e) {            
      }       
        
    }
    
    //Metodo{ d leer Datos
    public static void presentarDatos(File Archivo){
        JOptionPane.showMessageDialog(null, LeerDatos(Archivo));//Obtiene los datos del archivo y los presenta
    }
    
    //Metodo para leer datos de fichero
    public static String LeerDatos(File Archivo){
        String lector=""; // variable que me permitira ir almacenando los datos leidos
        FileReader lectorArchivo;//Variable que permitira leerArchivo
        // bloque de caprura de excepciones try-catch
        try {
            lectorArchivo=new FileReader(Archivo);//Crea el flujo de datos
            BufferedReader buferLector = new BufferedReader(lectorArchivo);// guarda los datod para recorre el achivo
            String aux="";// Varable que tomara el valor que se esta leyento para poderlo concadenar con la variable Lector
            //Bloque de lectura
            while (true) {                
                aux=buferLector.readLine();// aux toma el valor que se esta leyendo actualmente
                //Este if me permite verificar si esque hay danos para continuar concatenando
                if(aux!=null){
                    lector=lector +aux;
                }else{
                    break;
                }
            }
            //cerrar las variables de fichero
            buferLector.close();
            lectorArchivo.close();
        } catch (Exception e) {
            // Presenta un mensaje
            JOptionPane.showMessageDialog(null, "Se produjo un error al leer los datos");
        }
        return lector;
    }
}
